/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package sico.datos;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import sico.modelo.EntidadTrabajador;
import sico.modelo.IEntidad;

/**
 *
 * @author John Carlos Arrieta
 */
public class DAOEntidadTrabajador extends ManejadorBaseDatos implements IDAOPersistencia{

	public int insertar(IEntidad objeto)  throws Exception {
		int filas = 0;
		EntidadTrabajador trabajador = (EntidadTrabajador) objeto;
                Connection con = getConexion();
		
                String sentenciaSQL = "INSERT INTO trabajadores (nombre, cedula, rol, primeradmin, email) VALUES (" + ((trabajador.getNombre() == null)? null: "'" + trabajador.getNombre() + "'") + ", " + ((trabajador.getCedula() == null)? null: "'" + trabajador.getCedula() + "'") + "," + ((trabajador.getRol() == null)? null: "'" + trabajador.getRol() + "'") + "," + ((trabajador.getPrimerAdmin() == null)? null: "'" + trabajador.getPrimerAdmin() + "'") + "," + ((trabajador.getEmail() == null)? null: "'" + trabajador.getEmail() + "'") + ")";

                PreparedStatement sentencia = crearSentencia(sentenciaSQL);
                //DAOEntidadContrato daoContrato = new DAOEntidadContrato();
		//filas = actualizar(sentencia) + daoContrato.insertar(usuario.getContrato());
                filas = actualizar(sentencia);
		desconectar(  );

		return filas;
	}

    public DAOEntidadTrabajador(String driver, String servidor, String url, String usuarioBD, String passwordUsuarioBD, String nombreBD) throws Exception {
        super(driver, servidor, url, usuarioBD, passwordUsuarioBD, nombreBD);
    }

    public DAOEntidadTrabajador() throws Exception {
        super();
    }

// modificar( condicion )

// borrar( condicion )

// consultar( codigo )

    public ArrayList<IEntidad> listar( String condicion ) throws Exception {
            ArrayList<IEntidad> listaTrabajadores = new ArrayList<IEntidad>();
            EntidadTrabajador trabajador = null;
            Connection con = getConexion();
            String sentenciaSQL = "SELECT emp.*, cont.* FROM Empleados emp, Contratos cont" +
                                    (condicion == null || condicion.isEmpty()? " WHERE  emp.codigo = cont.empleado ":"WHERE " + condicion + " AND emp.contrato = cont.codigo") +
                                    " ORDER BY Nombre ";
            System.out.println(sentenciaSQL);
            PreparedStatement sentencia = crearSentencia( sentenciaSQL );
            ResultSet filasConsulta = consultar(sentencia);
            
            desconectar( );
            return listaTrabajadores ;

    }

   

    public int borrar(String condicion) throws Exception {
            int filas = 0;
            /*EntidadEmpleado empleadoAborrar = (EntidadEmpleado) buscar(condicion);
            String sentenciaSQL = "DELETE FROM  Empleados WHERE codigo=" + empleadoAborrar.getCodigo();
            conectar();
            PreparedStatement sentencia = crearSentencia( sentenciaSQL );
            actualizar(sentencia);
            desconectar(  );
            DAOEntidadContrato daoContrato = new DAOEntidadContrato();
            daoContrato.borrar(empleadoAborrar.getContrato().getCodigo(),false);*/
            return filas;
    }

  /*  public IEntidad buscar(String codigo) throws Exception {
        if(codigo == null || codigo.isEmpty()){
            throw new Exception ("El Empleado que desea Consultar no se encuentra en el Sistema");
        }
         Connection con = getConexion();
         String sentenciaSQL = "SELECT emp.*, cont.* FROM  Empleados emp, Contratos cont WHERE emp.codigo=" + codigo+" AND emp.codigo = cont.empleado" ; // se borran todos si la condicion es nulo o vacia
         System.out.println(sentenciaSQL);
         PreparedStatement senetencia = crearSentencia(sentenciaSQL);
         ResultSet filaResultado = consultar(senetencia);
         if (filaResultado.next()) {
            EntidadEmpleado empleadoEcontrado = new EntidadEmpleado();
            empleadoEcontrado.setCodigo(filaResultado.getString("emp.codigo"));
            empleadoEcontrado.setNombre(filaResultado.getString("emp.nombre"));
            empleadoEcontrado.setCargo(filaResultado.getString("emp.cargo"));
            empleadoEcontrado.setSalario(filaResultado.getInt("emp.salario"));
            EntidadContrato contrato = new EntidadContrato();
            contrato.setCodigo(filaResultado.getString("cont.codigo"));
            contrato.setInicio(new Date(filaResultado.getDate("cont.inicio").getTime()));
            contrato.setFin(new Date(filaResultado.getDate("cont.fin").getTime()));
            contrato.setTipo(filaResultado.getString("cont.tipo"));
            contrato.setSalarioInicial(filaResultado.getInt("cont.salario_inicio"));
            contrato.setEmpleado(empleadoEcontrado);
            empleadoEcontrado.setContrato(contrato);
            desconectar();
            return empleadoEcontrado;
          }
         else{
             desconectar();
             throw new Exception("El Empleado con codigo="+codigo+" no se encuentra en el Sistema");
         }
    }*/

    public int modificar(IEntidad objeto, String condicion) throws Exception {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public IEntidad buscar(String codigo) throws Exception {
        throw new UnsupportedOperationException("Not supported yet.");
    }

}
